package com.example.myapplication.kotlin

/*
● 接口只负责声明一个类必须拥有哪些能力（方法）或属性
● 不负责实现这些能力的具体细节
一个类可以同时实现多个接口，从而拥有多种不同的能力组合。
*/
fun main() {
    val man = Man("张三", 18)
    man.intro()
    man.work("写代码")
    man.eat()
}

/**
 * 接口只负责声明, 不负责实现
 */
//【1.定义第一个接口IPerson】
interface IPerson {
    // 1. 抽象属性
    val name: String
    val age: Int

    // 2. 抽象方法
    fun intro()
    fun work(msg: String)

    // 3. 默认实现
    fun eat() {
        println("吃吃吃")
    }
}

//【2.定义第二个接口IMan】
interface IMan {
    fun sleep()
}

//【3.定义类Man,继承两个接口】
// 这里: 后代表类Man必须实现接口中声明的所有抽象成员
class Man(override val name: String, override val age: Int) : IPerson, IMan {
    // 【提示=> override可以重写父类函数或者父接口中的函数】
    override fun intro() {
        println("我是 $name, 今年 $age 岁")
    }

    override fun work(msg: String) {
        println("我正在 $msg")
    }

    override fun sleep() {
        println("我要睡觉")
    }
}

